package com.ruoyi.system.domain;

import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 【请填写功能名称】对象 indicator
 * 
 * @author ruoyi
 * @date 2024-07-14
 */
public class Indicator extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 指标主键 */
    private Long id;

    /** 指标名称 */
    @Excel(name = "指标名称")
    private String indicatorName;

    /** 指标层级 */
    @Excel(name = "指标层级")
    private Long indicatorLevel;

    /** 父级指标ID */
    @Excel(name = "父级指标ID")
    private Long parentIndicatorId;

    /** 计算方式 */
    @Excel(name = "计算方式")
    private String calculationMethod;

    /** 指标描述 */
    @Excel(name = "指标描述")
    private String indicatorDescription;

    /** 指标类型 */
    @Excel(name = "指标类型")
    private String indicatorType;

    /** 数据来源 */
    @Excel(name = "数据来源")
    private String dataSource;

    /** 描述 */
    @Excel(name = "描述")
    private String description;

    /** 创建人 */
    @Excel(name = "创建人")
    private String createUser;

    /** 修改人 */
    @Excel(name = "修改人")
    private String modifyUser;

    /** 修改时间 */
    @Excel(name = "修改时间")
    private Date modifyTime;

    private String needData;

    private Float subjectiveWeight;

    private List<Indicator> children = new ArrayList<>();

    public Float getSubjectiveWeight() {
        return subjectiveWeight;
    }

    public void setSubjectiveWeight(Float subjectiveWeight) {
        this.subjectiveWeight = subjectiveWeight;
    }

    public void setNeedData(String needData) {
        this.needData = needData;
    }

    public String getNeedData() {
        return needData;
    }

    public List<Indicator> getChildren() {
        return children;
    }

    public void setChildren(List<Indicator> children) {
        this.children = children;
    }

    public void addChildren(Indicator indicator){
        this.children.add(indicator);
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }
    public void setIndicatorName(String indicatorName)
    {
        this.indicatorName = indicatorName;
    }

    public String getIndicatorName()
    {
        return indicatorName;
    }
    public void setIndicatorLevel(Long indicatorLevel)
    {
        this.indicatorLevel = indicatorLevel;
    }

    public Long getIndicatorLevel()
    {
        return indicatorLevel;
    }
    public void setParentIndicatorId(Long parentIndicatorId)
    {
        this.parentIndicatorId = parentIndicatorId;
    }

    public Long getParentIndicatorId()
    {
        return parentIndicatorId;
    }
    public void setCalculationMethod(String calculationMethod)
    {
        this.calculationMethod = calculationMethod;
    }

    public String getCalculationMethod()
    {
        return calculationMethod;
    }
    public void setIndicatorDescription(String indicatorDescription)
    {
        this.indicatorDescription = indicatorDescription;
    }

    public String getIndicatorDescription()
    {
        return indicatorDescription;
    }
    public void setIndicatorType(String indicatorType)
    {
        this.indicatorType = indicatorType;
    }

    public String getIndicatorType()
    {
        return indicatorType;
    }
    public void setDataSource(String dataSource)
    {
        this.dataSource = dataSource;
    }

    public String getDataSource()
    {
        return dataSource;
    }
    public void setDescription(String description)
    {
        this.description = description;
    }

    public String getDescription()
    {
        return description;
    }
    public void setCreateUser(String createUser)
    {
        this.createUser = createUser;
    }

    public String getCreateUser()
    {
        return createUser;
    }
    public void setModifyUser(String modifyUser)
    {
        this.modifyUser = modifyUser;
    }

    public String getModifyUser()
    {
        return modifyUser;
    }

    public Date getModifyTime() {
        return modifyTime;
    }

    public void setModifyTime(Date modifyTime) {
        this.modifyTime = modifyTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("indicatorName", getIndicatorName())
            .append("indicatorLevel", getIndicatorLevel())
            .append("parentIndicatorId", getParentIndicatorId())
            .append("calculationMethod", getCalculationMethod())
            .append("indicatorDescription", getIndicatorDescription())
            .append("indicatorType", getIndicatorType())
            .append("dataSource", getDataSource())
            .append("description", getDescription())
            .append("createUser", getCreateUser())
            .append("createTime", getCreateTime())
            .append("modifyUser", getModifyUser())
            .append("modifyTime", getModifyTime())
            .append("needData", getNeedData())
            .append("subjectiveWeight", getSubjectiveWeight())
            .toString();
    }
}